#include <stdio.h>
#include <signal.h>

//下面的flag若不加 volatile关键字，在优化后，编译器就会处理flag成一个常量，导致就算信号流处理使得flag变成1,进程也不会退出
//用带 -O2 和不带的编译器参数选项来编译形成可执行文件
//向该进程发送2号信号，发现

int flag = 0;
void handler(int sig)
{
    printf("chage flag 0 to 1\n");
    flag = 1;
}
int main()
{
    signal(2, handler);
    while(!flag);
    printf("process quit normal\n");
    return 0;
}
